﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace Core.TypeConvert
{
    public class MSSqlDbTypeConverter
    {
        public static string ToDbTypeString(string type)
        {
            string return_value = "DbType.String";
            switch (type.ToLower())
            {
                case "int":
                    return_value = "DbType.Int32";
                    break;
                case "text":
                    return_value = "DbType.String";
                    break;
                case "bigint":
                    return_value = "DbType.Int64";
                    break;
                case "binary":
                    return_value = "DbType.Binary";
                    break;
                case "bit":
                    return_value = "DbType.Boolean";
                    break;
                case "char":
                    return_value = "DbType.String";
                    break;
                case "datetime":
                    return_value = "DbType.DateTime";
                    break;
                case "decimal":
                    return_value = "DbType.Decimal";
                    break;
                case "float":
                    return_value = "DbType.Double";
                    break;
                case "image":
                    return_value = "DbType.Binary";
                    break;
                case "money":
                    return_value = "DbType.Decimal";
                    break;
                case "nchar":
                    return_value = "DbType.String";
                    break;
                case "ntext":
                    return_value = "DbType.String";
                    break;
                case "numeric":
                    return_value = "DbType.Decimal";
                    break;
                case "nvarchar":
                    return_value = "DbType.String";
                    break;
                case "real":
                    return_value = "DbType.Single";
                    break;
                case "smalldatetime":
                    return_value = "DbType.DateTime";
                    break;
                case "smallint":
                    return_value = "DbType.Int16";
                    break;
                case "smallmoney":
                    return_value = "DbType.Decimal";
                    break;
                case "timestamp":
                    return_value = "DbType.DateTime";
                    break;
                case "tinyint":
                    return_value = "DbType.Byte";
                    break;
                case "uniqueidentifier":
                    return_value = "DbType.Guid";
                    break;
                case "varbinary":
                    return_value = "DbType.Binary";
                    break;
                case "varchar":
                    return_value = "DbType.String";
                    break;
                case "Variant":
                    return_value = "DbType.Object";
                    break;
                default:
                    return_value = "DbType.String";
                    break;
            }
            return return_value;
        }

        #region MethodsBackup
        //public static DbType ToDbType(string type)
        //{
        //    DbType return_value = DbType.Object;
        //    switch (type.ToLower())
        //    {
        //        case "int":
        //            return_value = DbType.Int32;
        //            break;
        //        case "text":
        //            return_value = DbType.String;
        //            break;
        //        case "bigint":
        //            return_value = DbType.Int64;
        //            break;
        //        case "binary":
        //            return_value = DbType.Binary;
        //            break;
        //        case "bit":
        //            return_value = DbType.Boolean;
        //            break;
        //        case "char":
        //            return_value = DbType.String;
        //            break;
        //        case "datetime":
        //            return_value = DbType.DateTime;
        //            break;
        //        case "decimal":
        //            return_value = DbType.Decimal;
        //            break;
        //        case "float":
        //            return_value = DbType.Double;
        //            break;
        //        case "image":
        //            return_value = DbType.Binary;
        //            break;
        //        case "money":
        //            return_value = DbType.Decimal;
        //            break;
        //        case "nchar":
        //            return_value = DbType.String;
        //            break;
        //        case "ntext":
        //            return_value = DbType.String;
        //            break;
        //        case "numeric":
        //            return_value = DbType.Decimal;
        //            break;
        //        case "nvarchar":
        //            return_value = DbType.String;
        //            break;
        //        case "real":
        //            return_value = DbType.Single;
        //            break;
        //        case "smalldatetime":
        //            return_value = DbType.DateTime;
        //            break;
        //        case "smallint":
        //            return_value = DbType.Int16;
        //            break;
        //        case "smallmoney":
        //            return_value = DbType.Decimal;
        //            break;
        //        case "timestamp":
        //            return_value = DbType.DateTime;
        //            break;
        //        case "tinyint":
        //            return_value = DbType.Byte;
        //            break;
        //        case "uniqueidentifier":
        //            return_value = DbType.Guid;
        //            break;
        //        case "varbinary":
        //            return_value = DbType.Binary;
        //            break;
        //        case "varchar":
        //            return_value = DbType.String;
        //            break;
        //        case "Variant":
        //            return_value = DbType.Object;
        //            break;
        //        default:
        //            return_value = DbType.String;
        //            break;
        //    }
        //    return return_value;
        //}

        //public static Type MSSqlDbTypeToCSharpType(string type)
        //{
        //    Type reval = null;
        //    switch (type.ToLower())
        //    {
        //        case "int":
        //            reval = typeof(System.Int32);
        //            break;
        //        case "text":
        //            reval = typeof(System.String);
        //            break;
        //        case "bigint":
        //            reval = typeof(System.Int64);
        //            break;
        //        case "binary":
        //            reval = typeof(System.Byte[]);
        //            break;
        //        case "bit":
        //            reval = typeof(System.Boolean);
        //            break;
        //        case "char":
        //            reval = typeof(System.String);
        //            break;
        //        case "datetime":
        //            reval = typeof(System.DateTime);
        //            break;
        //        case "decimal":
        //            reval = typeof(System.Decimal);
        //            break;
        //        case "float":
        //            reval = typeof(System.Double);
        //            break;
        //        case "image":
        //            reval = typeof(System.Byte[]);
        //            break;
        //        case "money":
        //            reval = typeof(System.Decimal);
        //            break;
        //        case "nchar":
        //            reval = typeof(System.String);
        //            break;
        //        case "ntext":
        //            reval = typeof(System.String);
        //            break;
        //        case "numeric":
        //            reval = typeof(System.Decimal);
        //            break;
        //        case "nvarchar":
        //            reval = typeof(System.String);
        //            break;
        //        case "real":
        //            reval = typeof(System.Single);
        //            break;
        //        case "smalldatetime":
        //            reval = typeof(System.DateTime);
        //            break;
        //        case "smallint":
        //            reval = typeof(System.Int16);
        //            break;
        //        case "smallmoney":
        //            reval = typeof(System.Decimal);
        //            break;
        //        case "timestamp":
        //            reval = typeof(System.DateTime);
        //            break;
        //        case "tinyint":
        //            reval = typeof(System.Byte);
        //            break;
        //        case "uniqueidentifier":
        //            reval = typeof(System.Guid);
        //            break;
        //        case "varbinary":
        //            reval = typeof(System.Byte[]);
        //            break;
        //        case "varchar":
        //            reval = typeof(System.String);
        //            break;
        //        case "Variant":
        //            reval = typeof(System.Object);
        //            break;
        //        default:
        //            reval = typeof(System.String);
        //            break;
        //    }
        //    return reval;
        //}

        //private string ChangeToCSharpTypeBackup(string type)
        //{
        //    string reval = string.Empty;
        //    switch (type.ToLower())
        //    {
        //        case "int":
        //            reval = "Int32";
        //            break;
        //        case "text":
        //            reval = "String";
        //            break;
        //        case "bigint":
        //            reval = "Int64";
        //            break;
        //        case "binary":
        //            reval = "System.Byte[]";
        //            break;
        //        case "bit":
        //            reval = "Boolean";
        //            break;
        //        case "char":
        //            reval = "String";
        //            break;
        //        case "datetime":
        //            reval = "System.DateTime";
        //            break;
        //        case "decimal":
        //            reval = "System.Decimal";
        //            break;
        //        case "float":
        //            reval = "System.Double";
        //            break;
        //        case "image":
        //            reval = "System.Byte[]";
        //            break;
        //        case "money":
        //            reval = "System.Decimal";
        //            break;
        //        case "nchar":
        //            reval = "String";
        //            break;
        //        case "ntext":
        //            reval = "String";
        //            break;
        //        case "numeric":
        //            reval = "System.Decimal";
        //            break;
        //        case "nvarchar":
        //            reval = "String";
        //            break;
        //        case "real":
        //            reval = "System.Single";
        //            break;
        //        case "smalldatetime":
        //            reval = "System.DateTime";
        //            break;
        //        case "smallint":
        //            reval = "Int16";
        //            break;
        //        case "smallmoney":
        //            reval = "System.Decimal";
        //            break;
        //        case "timestamp":
        //            reval = "System.DateTime";
        //            break;
        //        case "tinyint":
        //            reval = "System.Byte";
        //            break;
        //        case "uniqueidentifier":
        //            reval = "System.Guid";
        //            break;
        //        case "varbinary":
        //            reval = "System.Byte[]";
        //            break;
        //        case "varchar":
        //            reval = "String";
        //            break;
        //        case "Variant":
        //            reval = "Object";
        //            break;
        //        default:
        //            reval = "String";
        //            break;
        //    }
        //    return reval;
        //}
        #endregion
    }
}
